﻿using System;
using System.Collections.Generic;
using System.IO;
using Ast.Framework.Caching;

namespace Ast.Framework.FileSystems.Paths
{
    public interface IPathProvider : IVolatileProvider
    {
        string Normalize(string path);
        string GetDirectoryName(string path);
        IEnumerable<string> ListFiles(string path);
        IEnumerable<string> ListDirectories(string path);
        string Combine(params string[] paths);
        Stream OpenFile(string path);
        StreamWriter CreateText(string path);
        Stream CreateFile(string path);
        DateTime GetFileLastWriteTimeUtc(string path);
        void DeleteFile(string path);
        bool FileExists(string path);
        bool DirectoryExists(string path);
        void CreateDirectory(string path);
        void DeleteDirectory(string path);
    }
}